import { useState, useEffect } from "react";

const Formattime = ({
  data,
  year = false,
  month = false,
  day = false,
  h = false,
  m = false,
  s = false,
}: {
  data: string | number | Date;  // 支持 string, number, Date 类型
  year?: boolean;
  month?: boolean;
  day?: boolean;
  h?: boolean;
  m?: boolean;
  s?: boolean;
}) => {
  const [time, setTime] = useState("");

  // 格式化时间
  const formatdate = () => {
    // 如果没有传递 data
    if (!data) {
      setTime("无效的日期");
      return;
    }

    // 确保 data 是一个有效的 Date 对象
    let getData: Date;

    // 如果 data 是时间戳，直接转换为 Date
    if (typeof data === "number") {
      getData = new Date(data);
    }
    // 如果 data 是字符串，尝试解析
    else if (typeof data === "string") {
      getData = new Date(data);
    }
    // 如果 data 本身已经是 Date 对象，直接使用
    else if (data instanceof Date) {
      getData = data;
    } else {
      setTime("无效的日期");
      return;
    }

    // 如果无法解析出有效的日期
    if (isNaN(getData.getTime())) {
      setTime("无效的日期");
      return;
    }

    let tm = "";
    if (year) {
      tm += `${getData.getFullYear()}年`;
    }
    if (month) {
      tm += `${getData.getMonth() + 1}月`;
    }
    if (day) {
      tm += `${getData.getDate()}日`;
    }
    if (h) {
      tm += `${getData.getHours()}点`;
    }
    if (m) {
      tm += `${getData.getMinutes()}分`;
    }
    if (s) {
      tm += `${getData.getSeconds()}秒`;
    }

    setTime(tm);  // 更新状态
  };

  useEffect(() => {
    formatdate();  // 每次 data 变化时更新显示的时间
  }, [data]);  // 依赖于 `data`

  return <>{time}</>;
};

export default Formattime;